

import org.apache.commons.lang3.StringUtils;

import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;
import java.util.List;

//读取指定范围数据
public class specifyRangeLineTest {

    public static void main(String[] args) throws Exception {
        RandomAccessFile raf = null;
        try {
            //以只读方式打开一个RandomAccessFile对象
            raf = new RandomAccessFile("C:\\Users\\Administrator\\Desktop\\ccccc\\aaa.txt", "r");

            //获取RandomAccessFile对象文件指针的位置，初始位置是0
            System.out.println("RandomAccessFile的文件指针的初始位置：" + raf.getFilePointer());
            //获取最后的位置，为下一次开始的偏移量
            long length = raf.length();//146563
            System.out.println(length);

            //移动raf的文件记录指针的位置
            int pos = 0;
            raf.seek(pos);
            byte[] bbuf = new byte[1024];
            //用于保存实际读取的字节数
            int hasRead = 0;
            StringBuilder stringBuilder = new StringBuilder();
            //使用循环来重复“取水”过程
            while ((hasRead = raf.read(bbuf)) > 0) {
                //取出“竹筒”中水滴（字节），将 字节数组转换成字符串输入
                String result = new String(bbuf, 0, hasRead);
                stringBuilder.append(result);
            }

            if (StringUtils.isNotEmpty(stringBuilder)) {
                String[] strings = stringBuilder.toString().split("\u001C");
                List<String> listStr = Arrays.asList(strings);
                System.out.println(listStr);
                System.out.println(listStr.size());
            }

        } catch (
                IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (raf != null) {
                    raf.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
}






